package cn.rentaotao.spring.web;

import cn.rentaotao.spring.exception.SpittleException;
import org.springframework.web.bind.annotation.*;

/**
 * <p>控制器通知
 * {@link ExceptionHandler}
 * {@link InitBinder}
 * {@link ModelAttribute}
 * 在带有 {@link ControllerAdvice} 注解的类中，以上注解标注的方法会运用到整个应用程序所有控制器中带有 @RequestMapping 注解的方法上
 *
 * @author rtt
 * @date 2022/5/16 14:06
 */
@ControllerAdvice()
public class CommonControllerAdvice {

    /**
     * 处理指定异常
     *
     * @return 异常结果
     */
    @ExceptionHandler(SpittleException.class)
    @ResponseBody
    public String exceptionHandler() {
        System.out.println("ExceptionHandler");
        return "ExceptionHandler";
    }

    @InitBinder()
    public void initBinder() {
        System.out.println("InitBinder");
    }

    @ModelAttribute()
    public String modelAttribute() {
        return "ModelAttribute";
    }
}
